1. Field of the Invention
The present invention relates to networks, and more particularly to improving buffer utilization in communication networks using non-negotiated content block sizes.
2. Background of the Invention
In various communications networks, the endpoints establish data pacing (i.e., data receiving/transferring from one network node to another) through variable number of content-blocks, but the size of each content-block (or data packet/frame size) is fixed. While each content-block during transfer may vary in size, data pacing is performed using content-blocks of a fixed size, and is not negotiated between endpoints (or ports/devices). Fibre Channel is one such environment that uses fixed size content blocks and is briefly described below.
Fibre channel is a set of American National Standard Institute (ANSI) standards, which provide a serial transmission protocol for storage and network protocols such as HIPPI, SCSI, IP, ATM and others. Fibre channel provides an input/output interface to meet the requirements of both channel and network users.
Fibre channel supports three different topologies: point-to-point, arbitrated loop and fibre channel fabric. The point-to-point topology attaches two devices directly. The arbitrated loop topology attaches devices in a loop. The fibre channel fabric topology attaches host systems directly to a fabric, which are then connected to multiple devices. The fibre channel fabric topology allows several media types to be interconnected.
Fibre channel is a closed system that relies on multiple ports to exchange information on attributes and characteristics to determine if the ports can operate together. If the ports can work together, they define the criteria under which they communicate.
In fibre channel, a path is established between two nodes where the path's primary task is to transport data from one point to another at high speed with low latency, performing only simple error detection in hardware.
In fibre channel, a device (e.g. device A) seeking access to another device (device B) sends an OPN primitive (after it wins arbitration) and establishes a connection with device B. Device B sends an R_RDY primitive indicating that credit is available for a frame. Thereafter, frames are transferred.
In fibre channel, data pacing is established by the R_RDY primitive, which informs the network that a network port has buffer space to receive an additional, full-sized frame. In Fibre Channel, a full-sized frame is typically, 2140 bytes, excluding Start-of-Frame and End-of-Frame primitives. Because the size of these content-blocks (or frames) in such a network is not negotiable for data pacing, buffer utilization is very poor.
In networks (for example, fibre channel) where data pacing utilizes non-negotiated size for content-blocks, traditional implementation of network ports keep a one-to-one relationship between content and the buffer. FIG. 2 shows a port with two 2 unused buffers, each of FULL_SIZE (if the maximum content size is defined as FULL_SIZE) to store a fixed size content block. FIG. 2 also shows two receive descriptor queues that store descriptors that describe content block size/type and/or location.
FIG. 3A shows a conventional implementation in a network port receiving two content-blocks where each block is placed in its own buffer. For example, Block #1 is placed in Buffer #1 and Block #2 is placed in Buffer #2. Until the content-blocks in the buffers are processed, the network port cannot receive additional content-blocks, although there may be enough free buffer space (FIG. 3A). The smaller the content-block relative to the buffer size, the poorer the buffer utilization.
As a network port receives a content-block, it adds a descriptor entry into the receive queue (FIG. 2). The descriptor entry includes information about where the content-block resides in the buffer space, and the length of the content block, etc. Since the receive queue is implemented in hardware, the maximum number of entries in a receive queue is fixed for a specific device. A receive queue with a fixed number of entries also limits buffer utilization.
FIG. 3B shows process steps in conventional techniques resulting in poor buffer utilization. For example, suppose a network port has 2 FULL_SIZE buffers available and 16 available entries in the receive queue, if the average size of content-blocks is less than the FULL_SIZE/16, the size of the receive queue limits buffer utilization, even after compacting content-blocks into the buffers.
Typically, a state-machine or a general-purpose central processing unit (“CPU”) via firmware processes frames. If the state machine/CPU has more time-critical tasks, processing of incoming frames would be delayed, and buffer utilization would suffer if the receive descriptor queue fills up before the buffers, as stated above.
Therefore, what is required is a process and system that allows dynamic content block compacting with dynamic sizing of the receive queue.